The present invention relates to software implementations of pseudo-random codes used in data communications.
Pseudo-random codes are known for data communication. The IEEE 802.11a standard, for example, defines a communication protocol for wireless LANs that include “scrambler” and “pilot insertion” codes. See, IEEE std. 802.11a-1999 (Dec. 30, 1999). Other communication protocols define other pseudo-random codes. For example, the Bluetooth specification. v. 1.0 B (Dec. 1, 1999) defines a “whitening” code in the context of another wireless communication protocol. Various code division multiple access standards use pseudo random codes as pilot signals and as spreading signals. Other communication protocols, of course, may define other pseudo-random codes to be used for other purposes. Although implementations may vary, scrambling codes typically serve to reduce redundancy in transmitted data and also to reduce DC bias that might exist in the transmitted data. Reducing DC bias makes it easier to capture the transmitted data at a receiver.
FIG. 1 is a block diagram illustrating operation of a conventional scrambler in the context of the IEEE 802.11a standard. Typically, the scrambler includes a Linear Feedback Shift Register (LFSR) 100 having a predetermined number of bit positions X1-X7. The LFSR is initialized with a “seed” code and thereafter, on each cycle of a driving clock (not shown), the LFSR shifts the stored code a single bit position to the left. A new bit value S is stored in the X1position representing an exclusive-or (XOR) of data in positions X4 and X7 (block 110). A bit of transmitted data D is XORed with the new data S (block 120), yielding scrambled data TXD. The result of the XOR will be transmitted to a receiver. In this example, a pseudo-random code is built from the values S generated over time.
FIG. 2 illustrates a simple communication link. In FIG. 2, scrambled data TXD may be transmitted from a source 210 to a destination 220. At the destination, the same pseudo-random code S is applied to the scrambled data TXD by another XOR operation to recover the original source data D (labeled D′ herein). If some receiver, either the destination or some unauthorized recipient of the data, attempted to recover the source data using an incorrect pseudo-random code or the correct code using an incorrect seed, the resulting data D′ would not match the source data D.
Table 1 is a truth table illustrating exemplary scrambling bits at the source (SSRC) and the destination (SDEST). As shown in the table, whenever SSRC≠SDEST, the recovered data D′ will not be the same of as the original source data D. Thus, a recipient that uses an incorrect pseudo-random code, due to either an incorrect code generation scheme or an incorrect seed code, will not be able to recover the source data signal.
TABLE 1D RECOVEREDSSRCDTXDSDESTD′CORRECTLY?00000Yes01101Yes10101No11000No00011No01110No10110Yes11011Yes
Conventionally, data scrambling for communication is performed by dedicated hardware circuits, using a dedicated LFSR circuit and XOR gates modeled after the system shown in FIG. 1. Thus, it is expected that pseudo-random codes and scrambled data will be generated iteratively using a driving clock source to control the circuit. Dedicated communication circuits typically are used to reduce communication latency. It would be possible to implement the scrambling processes in software, but the iterative processing that is used to generate the pseudo-random code would introduce severe latency problems in communication. Accordingly, for many applications, scrambling data by software is disfavored.
Although provision of dedicated circuits can achieve reduced latency, they can be disadvantageous because they are not flexible. Once a circuit is manufactured and deployed it cannot be updated to include processes that would be required, for example, to implement new standards or updates to existing standards. Accordingly the inventor foresees a need in the art for a software-implemented processing system that performs physical layer processing for communications, of which data scrambling is a part. Because software implementations typically are much slower than hardware circuits that perform the same processes, the inventor foresees a need in the art for a fast software implementation scrambling system, one that avoids the incremental, step-by-step generation of pseudo-random codes that occur in hardware systems.
Accordingly, there is a need in the art for a fast software-implemented scrambling algorithm for use in communications.